package com.xjc.business.service;

import com.xjc.business.entity.domain.StudentStayBedApplys;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xjc.business.entity.po.classadmin.ClassAdminStayBedApplyOpera;
import com.xjc.business.entity.po.stu.StayBedApplyPo;
import com.xjc.business.entity.vo.PageVo;
import com.xjc.business.entity.vo.classadmin.ClassStayApplyVo;
import com.xjc.business.entity.vo.stu.HistoryStayBedApplyVo;
import com.xjc.business.entity.vo.stu.StayBedApplyVo;
import com.xjc.system.result.Result;

import java.util.List;

/**
* @author root
* @description 针对表【student_stay_bed_applys(学生留宿申请表)】的数据库操作Service
* @createDate 2025-01-25 10:24:32
*/
public interface StudentStayBedApplysService extends IService<StudentStayBedApplys> {


    /**
     * 获取当前学生的留宿申请
     * @param id 学生微信id
     * @return Result
     */
    Result<StayBedApplyVo> getCurrentStayBedApply(Integer id);

    /**
     * 获取当前学生的历史留宿申请
     * @param id 学生微信id
     * @return Result
     */
    Result<List<HistoryStayBedApplyVo>> getHistoryStayBedApplyList(Integer id);

    /**
     * 提交留宿申请
     * @param stayBedApplyPo 留宿申请信息
     * @return 反馈
     */
    Result<String> addStayBedApply(StayBedApplyPo stayBedApplyPo);

    /**
     * 获取学生留宿申请列表
     * @param pageSize 每页显示条数
     * @param currentPage 当前页
     * @param classAdminId 辅导员id
     * @param status 状态
     * @param stuName 学生姓名
     * @return Result
     */
    Result<PageVo<ClassStayApplyVo>> getStayApplyPage(Integer pageSize, Integer currentPage, Integer classAdminId, Integer status, String stuName);

    /**
     * 获取学生留宿申请列表
     * @param pageSize 每页显示条数
     * @param currentPage 当前页
     * @param collegeAdminId 辅导员id
     * @param status 状态
     * @param stuName 学生姓名
     * @return Result
     */
    Result<PageVo<ClassStayApplyVo>> getStayApplyPage2(Integer pageSize, Integer currentPage, Integer collegeAdminId, Integer status, String stuName);


    /**
     * 辅导员审批留宿申请
     * @param classAdminStayBedApplyOpera 审批意见
     * @return Result
     */
    Result<String> leaveApplyOpera(ClassAdminStayBedApplyOpera classAdminStayBedApplyOpera);

    /**
     * 学院管理员审批留宿申请
     * @param classAdminStayBedApplyOpera 审批意见
     * @return Result
     */
    Result<String> leaveApplyOpera2(ClassAdminStayBedApplyOpera classAdminStayBedApplyOpera);
}
